package com.sne.sys.service;

import com.sne.common.entity.TreeNode;
import com.sne.sys.entity.SysDept;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sne.sys.vo.SysDeptVO;

import java.util.List;

/**
 * <p>
 * 部门 服务类
 * </p>
 *
 * @author fanghh
 * @since 2020-01-03
 */
public interface ISysDeptService extends IService<SysDept> {

    /**
     * 查询部门树
     *
     * @return TreeNode
     */
    List<TreeNode> findTree();

    /**
     * 查询子菜单
     *
     * @param topList  顶级部门
     * @param deptList 部门列表
     */
    void findChildren(List<SysDept> topList, List<SysDept> deptList);

    /**
     * 删除部门
     *
     * @param id id
     * @return boolean
     */
    boolean deleteByDeptId(Long id);

    /**
     * 删除多个部门
     *
     * @param ids id集合
     * @return boolean
     */
    boolean deleteByDeptIds(List<Long> ids);

    /**
     * 获取部门列表
     *
     * @param dept 查询参数
     * @return List
     */
    List<SysDeptVO> findList(SysDept dept);

    /**
     * 根据用户id获取部门
     *
     * @param id 用户id
     * @return List<SysDept>
     */
    List<SysDept> findDeptByUser(Long id);

    /**
     * 获取子级下的部门id
     *
     * @param deptId  部门id
     * @param deptIds 部门id集合
     */
    void findChildrenIds(Long deptId, List<Long> deptIds);
}
